package com.yudongyang.utils;

public class StringUtil {

	/**
	* 功能：检查包含空白字符在内的字符系列长度
	* 示例：
	* StringUtil.hasLength(null) -> false
	* StringUtil.hasLength("") -> false
	* StringUtil.hasLength(" ") -> true
	* StringUtil.hasLength("Hello") -> true
	*/
	public static boolean hasLength(String src){
		
		return src!= null && src.length()>0;
	    //TODO 实现代码
	}
	/**
	* 功能：检查包含空白字符在内的字符系列长度，并处理过滤前后空格
	* 示例：
	* StringUtil.hasText(null) -> false
	* StringUtil.hasText("") -> false
	* StringUtil.hasText(" ") -> false
	* StringUtil.hasText("Hello") -> true
	*/
	public static boolean hasText(String src){
		
		return src!= null && src.trim().length()>0;
	    //TODO 实现代码
	}
	/**
	* 功能：验证是否为合格邮箱
	* 示例：
	* StringUtil.isEmail(null) -> false
	* StringUtil.isEmail("") -> false
	* StringUtil.isEmail("zhangjihao@") -> false
	* StringUtil.isEmail("zhangjihao@sohu") -> false
	* StringUtil.isEmail("zhangjihao@sohu.com") -> true
	*/
	public static boolean isEmail(String email){
		if(!hasText(email)) {
			return false;
		}
		String regex="^([a-z0-9A-Z]+[-|_|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
		if(email.matches(regex)) {
			return true;
		}
		return false;
	    //TODO 实现代码
	}
	/**
	* 功能：验证是否为合格手机号
	* 示例：
	* StringUtil.isPhone(null) -> false
	* StringUtil.isPhone("") -> false
	* StringUtil.isPhone("14312039428") -> false
	* StringUtil.isPhone("13900139000") -> true
	*/
	public static boolean isPhone(String src){
		if(!hasText(src)) {
			return false;
		}
		String regex="^1[3|4|5|7|8]\\d{9}$";
		if(src.matches(regex)) {
			return true;
		}
		return false;
	    //TODO 实现代码
	}
	/**
	* 功能：判断是否全部为字母
	* 示例：
	* StringUtil.isLetter(null) -> false
	* StringUtil.isLetter("") -> false
	* StringUtil.isLetter(".com") -> false
	* StringUtil.isLetter("howSun") -> true
	*/
	public static boolean isLetter(String src){
		 if(!hasText(src))
			 return false;
		 String regex ="[a-zA-Z]+";
			if(src.matches(regex)) 
				return true;
		
		return false;
	    //TODO 实现代码
	}
	/**
	* 功能：反转字符串
	* 示例："abcd" → "dcba"
	*
	* 参数1：src，源字符串
	* 返回值：反转的字符串
	*/
	public static String reverse(String src){
		
		StringBuffer buffer = new StringBuffer(src);
		return buffer.reverse().toString();
		
		
	    //TODO 实现代码
	}
	/**
	* 功能：隐藏字符串
	* 示例：StringUtil.hidden("13856237928", 3,7) -> "138****7928"
	* 参数1：src，源字符串
	* 参数2：start，从开始的位置隐藏，如果为空，则全部不隐藏，
	* 参数3：end，结束位置，如果为空或为-1，则直到末尾都隐藏，如果超过源字符串长度，则只到末尾
	* 返回值：隐藏结果
	*/
	public static String hidden(String src, Integer start, Integer end){

		  if(!hasText(src))
			    throw new IllegalArgumentException("源字符串不能为空");
			    if(start>=end)
			    	   throw new IllegalArgumentException("开始下标不能大于等于结束小标");	
				
				String str1 =src.substring(start, end);//截取被替换的字符串        如5623
				String str2 ="";//要替换为的值
				for (int i = 0; i < str1.length(); i++) {
					str2+="*";
				}
		return 	src.replaceFirst(str1, str2);
	    //TODO 实现代码
	}
}
